package com.boc.ewr.util.initRedis;

import com.boc.ewr.pamenu.entity.EwrParamMenu;
import com.boc.ewr.pamenu.service.IEwrParamMenuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;


@Service
@Slf4j
public class InitRedisParameter {


    private static String pre = "pub_config"; // 存储到redis中的前缀
    private static String operation = ":"; // redis冒号分组

    @Autowired
    public RedisTemplate redisTemplate;

    @Autowired
    private IEwrParamMenuService ewrParamMenuService;
    @PostConstruct // 是spring框架的注解，在方法上加该注解会在项目启动的时候执行该方法，也可以理解为在spring容器初始化的时候执行该方法。
    public void reload() {
        log.info("-------------------参数列表初始化开始-------------------");
        List<EwrParamMenu> mapsList = ewrParamMenuService.list();
        int i = 0;//计数器
        //初始化配置参数表
        if (!CollectionUtils.isEmpty(mapsList)) { // 存在值

            StringBuilder sbl = new StringBuilder();
            for (EwrParamMenu menu : mapsList) {
                sbl.setLength(0);
                if(!"1".equals(menu.getPaStatus())){
                    continue;
                }
                String config_name = menu.getPaKey(); //数据库配置表中的字段名称| 配置名: SMS_TEMPLATECODE_LOGGIN (阿里云下短信模板号 - 登录)
                String config_value = menu.getPaValue(); // 数据库配置表中的字段名称| 配置具体值: xxxxx (阿里云下短信模板号)
                String key = sbl.append(pre).append(operation).append(config_name).toString();
                redisTemplate.opsForValue().set(key, config_value);
                i++;
            }

        }
        //初始化人员参数表
        log.info("一共缓存了：{} 条数据", i );
        log.info("-------------------参数列表初始化成功-------------------");
    }


}
